Property Proxy

다른 프로그래밍 언어에서는 속성(property)를 get/set 메서드가 지원되는 필드로서 특별하게 취급하며,
언어차원에서 이를 지원한다.
C++에서는 이를 언어차원에서 지원하지 않는다.
( C++ 컴파일러 차원에서 이를 이용할 수는 있다.
__declspec(property) Clang, Intel, MSVC 등의 컴파일러 )

속성 프록시(Property proxy)는 기본적으로 속성을 가장한 클래스를 말한다.
template <typename T>
struct Property{
T value;
Property(const T initial_value){
*this=initial_value; // value
}
operator T(){
// get
return value;
}
T operator=(T new_value){
// set
return value=new_value;
}
};
struct Creature{
Property<int> strength{10};
Property<int> agility{5};
};
//
Creature creature;
creature.agility=20;
auto x=creature.strength;
Propery<T> 클래스는 T가 사용되는 자리를 대체할 수 있다(프록시 디자인 패턴)
프록시 변수들은 일반 필드 변수처럼 사용 가능

일반 타입을 사용자가 커스터마이징해서 사용할 수 있다.